package com.ssy.lingxi.settle.accounts.model.vo.request;

import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.settle.accounts.handler.annotation.DateStringFormatAnnotation;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 待对账单列表查询条件VO
 * @author Saske
 * @date 2021/12/3
 * @version 2.0.0
 */
public class ToBeReconciliationListVO  extends PageVO implements Serializable {

    private static final long serialVersionUID = -8883960826739570038L;


    /**
     * 单据编号，可以是订单编号，或者售后编号
     */
    private String billNo;

    /**
     * 付款方
     */
    private String payer;

    /**
     * 收款方
     */
    private String payee;

    /**
     * 税率
     */
    private BigDecimal taxRate;

    /**
     * 发货单号
     */
    private String deliveryNo;

    /**
     * 收货单号
     */
    private String receiveNo;

    /**
     * 结算方式，定义在PurchaseContractPayTypeEnum中，1-现结 2-账期(按月) 3-账期(按天) 4-月结
     */
    private Integer payWay;

    /**
     * 预计结算日期开始，格式为yyyy-MM-dd
     */
    @DateStringFormatAnnotation
    private String expectPayTimeStart;

    /**
     * 预计结算日期结束，格式为yyyy-MM-dd
     */
    @DateStringFormatAnnotation
    private String expectPayTimeEnd;

    /**
     * 预计结算日期排序,1-升序 2-倒序
     */
    @Min(value = 1 ,message = "预计结算日期排序方式范围为：1-2")
    @Max(value = 2 ,message = "预计结算日期排序方式范围为：1-2")
    private Integer expectPayTimeSort = 1;

    /**
     * 发货日期排序,1-升序 2-倒序
     */
    @Min(value = 1 ,message = "发货日期排序方式范围为：1-2")
    @Max(value = 2 ,message = "发货日期排序方式范围为：1-2")
    private Integer deliveryTimeSort = 1;

    /**
     * 收货日期排序,1-升序 2-倒序
     */
    @Min(value = 1 ,message = "收货日期排序方式范围为：1-2")
    @Max(value = 2 ,message = "收货日期排序方式范围为：1-2")
    private Integer receiveTimeSort = 1;

    /**
     * 筛选待对账商品信息id List数据结构
     */
    private List<Long> ids;

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getPayer() {
        return payer;
    }

    public void setPayer(String payer) {
        this.payer = payer;
    }

    public String getPayee() {
        return payee;
    }

    public void setPayee(String payee) {
        this.payee = payee;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }

    public String getDeliveryNo() {
        return deliveryNo;
    }

    public void setDeliveryNo(String deliveryNo) {
        this.deliveryNo = deliveryNo;
    }

    public String getReceiveNo() {
        return receiveNo;
    }

    public void setReceiveNo(String receiveNo) {
        this.receiveNo = receiveNo;
    }

    public Integer getPayWay() {
        return payWay;
    }

    public void setPayWay(Integer payWay) {
        this.payWay = payWay;
    }

    public String getExpectPayTimeStart() {
        return expectPayTimeStart;
    }

    public void setExpectPayTimeStart(String expectPayTimeStart) {
        this.expectPayTimeStart = expectPayTimeStart;
    }

    public String getExpectPayTimeEnd() {
        return expectPayTimeEnd;
    }

    public void setExpectPayTimeEnd(String expectPayTimeEnd) {
        this.expectPayTimeEnd = expectPayTimeEnd;
    }

    public Integer getExpectPayTimeSort() {
        return expectPayTimeSort;
    }

    public void setExpectPayTimeSort(Integer expectPayTimeSort) {
        this.expectPayTimeSort = expectPayTimeSort;
    }

    public Integer getDeliveryTimeSort() {
        return deliveryTimeSort;
    }

    public void setDeliveryTimeSort(Integer deliveryTimeSort) {
        this.deliveryTimeSort = deliveryTimeSort;
    }

    public Integer getReceiveTimeSort() {
        return receiveTimeSort;
    }

    public void setReceiveTimeSort(Integer receiveTimeSort) {
        this.receiveTimeSort = receiveTimeSort;
    }

    public List<Long> getIds() {
        return ids;
    }

    public void setIds(List<Long> ids) {
        this.ids = ids;
    }
}
